﻿#define _CRT_SECURE_NO_WARNINGS
//作者：宋安康
#include<bits/stdc++.h>
using namespace std;

//list的定义和结构
//list是一种双向链表容器
//以节点形式存储元素，并使用指针将这些节点链接在一起，形成一个链表结构
//双向性，动态大小，不连续存储

#include<iostream>
#include<list>

//int main() 
//{
//	ios::sync_with_stdio;  //取消同步流
//	list<int> mylist;
//	//尾插
//	mylist.push_back(1);
//	mylist.push_back(2);
//	mylist.push_back(3);
//	//头插
//	mylist.push_front(0);
//
//	for (int num : mylist)
//	{
//		cout << num << " ";
//	}cout << endl;
//	return 0;
//}


//int main() 
//{
//	list<int> mylist;
//	for (int i = 1; i <=5 ; i++)
//	{
//		mylist.push_back(i);
//	}
//	for (auto &i : mylist)
//	{
//		cout << i << " ";
//	}
//	cout << "\n";
//	reverse(mylist.begin(),mylist.end());
//
//	for (const auto &i : mylist)
//	{
//		cout << i << ' ';
//
//	}
//	cout << "\n";
//	mylist.insert(++mylist.begin(),0);
//	for (const auto& i : mylist)
//	{
//		cout << i << ' ';
//
//	}
//	cout << "\n";
//	mylist.erase(++++mylist.begin(), --mylist.end());
//	cout << "链表大小" << mylist.size() << '\n';
//	for (const auto& i : mylist)
//	{
//		cout << i << ' ';
//
//	}
//	cout << "\n";
//}

//map
//关联容器，用于存储一组键值对

//unordered_map

//int main() 
//{
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	map<int, string>  mymap = { {1,"apple"},{2,"banana"},{3,"orange"}};
//
//	mymap.insert(make_pair(4,"garpes"));
//
//	cout << "value at key:" << mymap[2] << endl;
//
//	for (const auto& pair : mymap)
//	{
//		cout << " key :" << pair.first << ", value: " << pair.second << endl;
//	}
//	mymap.erase(3);
//	if (mymap.count(3) == 0)
//	{
//		cout << "key 3 not found," << endl;
//
//	}
//
//	mymap.clear();
//	if (mymap.empty())
//	{
//		cout << " map is empty." << endl;
//
//	}
//	  
//	return 0;
//}

//int main() 
//{
//	multimap<int, string> mymultmap = { {1,"sak"},{2,"liu"},{2,"hqw"}};
//	mymultmap.insert(make_pair(3,"wja"));
//	auto range = mymultmap.equal_range(2);
//	for (auto it = range.first;it!= range.second; it++)
//	{
//		cout << "key : " << it->first << ", value" << it->second << endl;
//	}
//
//	for (const auto&pair : mymultmap)
//	{
//		cout << " key :" << pair.first << ",value:" << pair.second << endl;
//	}
//
//	mymultmap.erase(2);
//
//	if (mymultmap.count(2) == 0)
//	{
//		cout << "key 2 not found!" << endl;
//	}
//
//	mymultmap.clear();
//	if (mymultmap.empty())
//	{
//		cout << "mtmultimap is empty" << endl;
//	}
//	return 0;
//}

//#include<unordered_map>
//int main() 
//{
//	unordered_map<string, int> mymap = { {"apple",3},{"banana",5},{"orange",1}};
//
//	mymap.insert(make_pair("grahe", 4));
//
//	cout << "value for key banana:" << mymap["banana"] << endl;
//	for (const auto& pair : mymap)
//	{
//		cout << " key :" << pair.first << ",value:" << pair.second << endl;
//
//	}
//	mymap.erase("banana");
//	if (mymap.count("banana") == 0)
//	{
//		cout << "key banana not found" << endl;
//	}
//	mymap.clear();
//	if (mymap.empty())
//	{
//		cout << "map is empty" << endl;
//	}
//	return 0;
//}

//pair
//pair 是一个模板类，用于一对值的组合
//两个值的类型可以不同
//
//int main() 
//{/*
//	pair<int, double> p1(1,3.14);
//	pair<char, string> p2('a',"hello");
//	cout << p1.first << "," << p1.second << endl;
//	cout << p2.second << "," << p2.second << endl;*/
//
//
//	//pair的嵌套
//	/*pair<int, int> p1(1,2);
//	pair<int, pair<int, int>> p2(3, make_pair(4, 5));
//	pair<pair<int, int>, pair<int, int>> p3(make_pair(6, 7), make_pair(3, 4));
//	cout << p1.first << "," << p1.second << endl;
//	cout << p2.first << "," << p2.second.first << ","<<p2.second.second << endl;
//	cout << p3.first.first << "," << p3.first.second << "," << p3.second.first << "," << p3.second.second << endl;*/
//
//	vector<pair<int, int>> vec;
//	vec.push_back(make_pair(3,2));
//	vec.push_back(make_pair(1,4));
//	vec.push_back(make_pair(2,3));
//
//	sort(vec.begin(), vec.end());
//
//	for (const auto& p : vec)
//	{
//		cout << p.first << "," << p.second << endl;
//
//	}
//
//	return 0;
//}

//vector
//vector是一个动态数组容器 ，可以存储一系列相同类型的元素
//
//int main() 
//{
//	//vector<int> vec = {1,4,6,7,5};
//	//sort(vec.begin(),vec.end());
//	//for (const auto& num : vec)
//	//{
//	//	cout << num << " ";
//	//}
//
//	vector<int> vec = { 2,4,7,4,2,1,4,6,7,5 };
//	sort(vec.begin(), vec.end());
//	auto last = unique(vec.begin(), vec.end());   //返回第一个重复元素的迭代器
//	vec.erase(last,vec.end());
//
//	for (const auto& num : vec)
//	{
//		cout << num << " ";
//	}
//
//	return 0;
//}

//int main() 
//{
//	vector<int> vec;
//	vec.push_back(4);
//	vec.push_back(1);
//	vec.push_back(4);
//	vec.push_back(2);
//	vec.push_back(6);
//	vec.push_back(8);
//	vec.push_back(9);
//	vec.push_back(6);
//	vec.push_back(8);
//	vec.push_back(7);
//	vec.push_back(3);
//
//	cout << "原始向量中的元素：" << endl;
//
//	for (const auto& vecs : vec)
//	{
//		cout << vecs << " ";
//	}
//	cout << endl;  //endl相当于换行
//	sort(vec.begin(),vec.end());
//	cout << "排序后的向量：";
//	for (const auto& vecs : vec)
//	{
//		cout << vecs << " ";
//	}
//
//	cout << endl;
//	vec.erase(unique(vec.begin(), vec.end()),vec.end());
//	cout << "去重复后的向量：" << endl;
//
//	for (const auto& vecs : vec)
//	{
//		cout << vecs << " ";
//	}
//	cout << endl;  //endl相当于换行
//
//	vec.insert(vec.begin() + 2, 10);
//	for (const auto& vecs : vec)
//	{
//		cout << vecs << " ";
//	}
//	cout << endl;  //endl相当于换行
//
//	vec.erase(vec.begin() + 4);
//	for (const auto& vecs : vec)
//	{
//		cout << vecs << " ";
//	}
//	cout << endl;  //endl相当于换行
//
//	if (vec.empty())
//	{
//		cout << "向量为空" << endl;
//	}else
//		cout << "向量不为空" << endl;
//
//	cout << "向量的大小" << vec.size() << endl;
//
//	vec.clear();
//	if (vec.empty())
//	{
//		cout << "向量为空" << endl;
//	}
//	else
//		cout << "向量不为空" << endl;
//	return 0;
//}

//stack是一种后进先出的数据结构
//同种类型的元素

//int main() 
//{
//	stack<int> mystack;
//	mystack.push(20);
//	mystack.push(10);
//	mystack.push(30);
//	mystack.push(40);
//
//	cout << "栈顶元素" << mystack.top() << endl;
//	mystack.pop();
//	cout << "弹出一个元素后的栈顶元素" << mystack.top() << endl;
//	if (mystack.empty())
//	{
//		cout << " 栈为空" << endl;
//	}
//	else
//	{
//		cout << "栈不为空" << endl;
//	}
//	cout << "栈的大小" << mystack.size() << endl;
//
//
//	return 0;
//}

//queue队列
//queue是一种先进先出的数据结构
//priority_queue优先队列

//int main() 
//{
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	int m; cin >> m;
//	queue<string> V, N;
//	while (m--)
//	{
//		string op; cin >> op;
//		if (op == "IN")
//		{
//			string name, q; cin >> name >> q;
//			if (q == "V")
//			{
//				V.push(name);
//			}
//			else
//			{
//				N.push(name);
//			}
//		}
//		else
//		{
//			string q;
//			cin >> q;
//			if (q == "V")
//			{
//				V.pop();
//			}
//			else
//			{
//				N.pop();
//			}
//		}
//
//	}
//
//	while (V.size())
//	{
//		cout << V.front() << '\n';
//		V.pop();
//	}
//	while (N.size())
//	{
//		cout << N.front() << "\n";
//		N.pop();
//	}
//	return 0;
//}

//int main() 
//{
//	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
//	int n;
//	cin >> n;
//	priority_queue<long long, vector<long long>, greater<long long>> pq;
//	for (int i = 1; i <= n ; i++)
//	{
//		int x; cin >> x;
//		pq.push(x);
//	}
//	long long ans = 0;
//	while (pq.size()>= 2)
//	{
//		long long x = pq.top(); pq.pop();
//		long long y = pq.top(); pq.pop();
//
//		ans += x + y;
//		pq.push(x + y);
//	}
//	cout << ans << "\n";
//	return 0;
//}
#define N 100
int a[N];
int main() 
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);

	int n;
	cin >> n;
	for (int i = 1; i <= n; i++)
	{
		cin >> a[i];
	}
	sort(a+1,a+1+n);
	for (int i = 1; i <= n; i++)
	{
		cout << a[i] << " , ";
	}
	return 0;

}